package code1.linkedlist;

/**
 * 删除链表元素
 * 原题链接：https://leetcode.cn/problems/remove-linked-list-elements/
 */
public class P203 {


    public class ListNode {
        int val;
        ListNode next;
        ListNode() {}
        ListNode(int val) { this.val = val; }
        ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }

    //删除链表元素(不带头结点类型的链表，头结点需要进行特殊处理)
    public static ListNode removeElements(ListNode head, int val) {
        //判断头结点
        while(head!=null && head.val==val){
            head=head.next;
        }
        //判断非头节点
        ListNode p=head;    //表示当前的节点
        while(p!=null){
            if(p.next!=null && p.next.val==val){
                p.next=p.next.next; //删除下一个节点
            }else {
                p=p.next;
            }
        }
        return head;
    }


}
